/******************************************************************************/
/*! 
    Filename
    [Copyright]

    \file
    \namespace    
    \brief      
*/
/******************************************************************************/
/*** Include guard ************************************************************/
#ifndef GAMECOMPONENT_H
#define GAMECOMPONENT_H

/*** Includes *****************************************************************/
#include "NeroCore\NObject.h"

/*** Forward Declarations *****************************************************/
namespace Core
{
	class NSector;
	class NArchive;
}

/*** Namespace ****************************************************************/
namespace Engine
{

/*** Macros *******************************************************************/

/*** Constants ****************************************************************/

/*** Interface ****************************************************************/
class NEntity : public Core::NObject
{
	RTTI_DECLARATIONS(NEntity, Core::NObject)

public:
	NEntity(void);

	virtual ~NEntity(void);

	NEntity(const NEntity& rhs);

	Core::NSector& GetSector();

	void SetSector(Core::NSector* sector);

	virtual void Initialize();
	
	virtual void Update(float deltaTime);

	void SetEnabled(bool enabled);

	virtual int Serialize(Core::NArchive ar);

	virtual int Deserialize(Core::NArchive ar);

protected:
	bool mEnabled;
	Core::NSector* mSector;
	unsigned int mUniqueId;
};
}

#endif //GAMECOMPONENT_H